package com.bjqg.bjqg01.bjqg.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * 日期工具类
 */
public class DateUtils {
    /**
     * 将long得到-- 小时:分
     *
     * @param lefttime
     * @return 小时:分
     */
    public static String formatTimeSimple(long lefttime) {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.CHINA);
        String sDateTime = sdf.format(lefttime);
        return sDateTime;
    }

    public static String formatTime(long lefttime) {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.CHINA);
        String sDateTime = sdf.format(lefttime);
        return sDateTime;
    }

    /**
     * 得到: 年-月-日 小时:分钟
     *
     * @param lefttime
     * @return 年-月-日 小时:分钟
     */
    public static String formatDateAndTime(long lefttime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
        String sDateTime = sdf.format(lefttime);
        return sDateTime;
    }

    /**
     * 得到: 年-月-日
     *
     * @param lefttime
     * @return 年-月-日
     */
    public static String formatDate(long lefttime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
        String sDateTime = sdf.format(lefttime);
        return sDateTime;
    }

    /**
     * 得到: 年-月-日
     *
     * @param lefttime
     * @return 年-月-日
     */
    public static String formatDate2(String lefttime) {
//        String[] years = lefttime.split(".");
//        return years[0]+"年"+years[1]+"月"+years[2]+"日";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd", Locale.CHINA);
        Date sDateTime = null;
        try {
            sDateTime = sdf2.parse(lefttime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日", Locale.CHINA);
        return sdf.format(sDateTime);
    }

    /**
     * 得到: 年-月-日
     *
     * @param lefttime
     * @return 年-月-日
     */
    public static String formatPointDate(long lefttime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd", Locale.CHINA);
        String sDateTime = sdf.format(lefttime);
        return sDateTime;
    }

    /**
     * 字符串转为long
     *
     * @param time     字符串时间,注意:格式要与template定义的一样
     * @param template 要格式化的格式:如time为09:21:12那么template为"HH:mm:ss"
     * @return long
     */
    public static long formatToLong(String time, String template) {
        SimpleDateFormat sdf = new SimpleDateFormat(template, Locale.CHINA);
        try {
            Date d = sdf.parse(time);
            Calendar c = Calendar.getInstance();
            c.setTime(d);
            long l = c.getTimeInMillis();
            return l;
        } catch (ParseException e) {
            e.printStackTrace();
            return 0;
        }
    }

    /**
     * 得到年份
     *
     * @param lefttime
     * @return 得到年份
     */
    public static int formatYear(long lefttime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy", Locale.CHINA);
        String sDateTime = sdf.format(lefttime);
        int i = Integer.parseInt(sDateTime);
        return i;
    }

    /**
     * 得到月份
     *
     * @param lefttime
     * @return 得到月份
     */
    public static int formatMonth(long lefttime) {
        SimpleDateFormat sdf = new SimpleDateFormat("MM", Locale.CHINA);
        String sDateTime = sdf.format(lefttime);
        int i = Integer.parseInt(sDateTime);
        return i;
    }

    public static String fromServiceTimeToApp(String time) {
        if (time != null && time.length() > 10) {
            String timaA = time.substring(0, 10);
            String timaB = time.substring(11, 16);
            return timaA + " " + timaB;
        } else {
            return time;
        }
    }

    /**
     * 日期的加减方法
     * 用于在当前的天或者小时或者分钟或者月份的基础上加上或者减去若干小时，分钟，日，月
     *
     * @param currentDay 当前月份的某一天
     * @param day        (Calendar.DATE 天 Calendar.HOUR 小时 Calendar.MINUTE 分钟 Calendar.MONTH 月)需要加上的天数或者需要减去的天数，
     *                   例如：加上10天：(Calendar.DATE,10）减去十天：(Calendar.DATE,-10)
     * @return 返回加上或者减去的那个日期
     * @author 程熙
     * ${2013-11-19}
     */
    public static String dayAddAndSub(int currentDay, int day) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(currentDay, day);
        Date startDate = calendar.getTime();

        return dateToString(startDate, "yyyy-MM-dd");
    }

    /**
     * formatType格式为yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
     * data Date类型的时间
     */
    public static String dateToString(Date data, String formatType) {
        return new SimpleDateFormat(formatType).format(data);
    }

    /**
     * time斜杠分开
     *
     * @return
     */
    public static String timeMinute(String time) {
        SimpleDateFormat sdr = new SimpleDateFormat("HH:mm");
        @SuppressWarnings("unused")
        long lcc = Long.valueOf(time);
        int i = Integer.parseInt(time);
        String times = sdr.format(new Date(i * 1000L));
        return times;

    }
}
